package bancoDeDados;

import java.sql.ResultSet;

import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class DadosClientes {
	
	private Conexao bancoConexao = new Conexao();
	
	public void inserirClientes(String nome, String telefone, String celular, String etapa, String rua, String bloco, int apto)
	{
		bancoConexao.conecta();
		try 
		{
			String sql = "INSERT INTO clientes (cliNome, cliTelefone, cliCelular, cliEtapa, cliRua, cliBloco, cliApartamento)"+
						  "VALUES"+
					       "('"+nome+"','"+telefone+"','"+celular+"','"+etapa+"','"+rua+"','"+bloco+"',"+apto+")";
			try 
			{
				bancoConexao.st.execute(sql);
				System.out.println(sql);
			} 
			catch (Exception e) 
			{
				System.out.println("Erro ao executar codigo SQL de insercao");
				System.out.println(sql);
			}
		}
		catch (Exception e) 
		{
			System.out.println("Erro no codigo SQL para inserir");
		}
	}
	public void inserirClientesSemTelefone(String nome, String celular, String etapa, String rua, String bloco, int apto)
	{
		bancoConexao.conecta();
		try 
		{
			String sql = "INSERT INTO clientes (cliNome, cliTelefone, cliCelular, cliEtapa, cliRua, cliBloco, cliApartamento)"+
						  "VALUES"+
					       "('"+nome+"',NULL,'"+celular+"','"+etapa+"','"+rua+"','"+bloco+"',"+apto+")";
			try 
			{
				bancoConexao.st.execute(sql);
				System.out.println(sql);
			} 
			catch (Exception e) 
			{
				System.out.println("Erro ao executar codigo SQL de insercao");
				System.out.println(sql);
			}
		}
		catch (Exception e) 
		{
			System.out.println("Erro no codigo SQL para inserir");
		}
	}
	public void inserirClientesSemCelular(String nome, String telefone,String etapa, String rua, String bloco, int apto)
	{
		bancoConexao.conecta();
		try 
		{
			String sql = "INSERT INTO clientes (cliNome, cliTelefone, cliCelular, cliEtapa, cliRua, cliBloco, cliApartamento)"+
						  "VALUES"+
					       "('"+nome+"','"+telefone+"',NULL,'"+etapa+"','"+rua+"','"+bloco+"',"+apto+")";
			try 
			{
				bancoConexao.st.execute(sql);
				System.out.println(sql);
			} 
			catch (Exception e) 
			{
				System.out.println("Erro ao executar codigo SQL de insercao");
				System.out.println(sql);
			}
		}
		catch (Exception e) 
		{
			System.out.println("Erro no codigo SQL para inserir");
		}
	}
	public void carregarTabela(DefaultTableModel modelo)
	{
		modelo.setNumRows(0);
		bancoConexao.conecta();
		try 
		{
			String sql = "SELECT * FROM clientes ORDER BY cliCod";
			try 
			{
				ResultSet rs = bancoConexao.st.executeQuery(sql);
				while(rs.next())
				{
					modelo.addRow(new String[]{
												rs.getString("cliCod"),
												rs.getString("cliNome"),
												rs.getString("cliTelefone"),
												rs.getString("cliCelular"),
												rs.getString("cliEtapa"),
												rs.getString("cliRua"),
												rs.getString("cliBloco"),
												rs.getString("cliApartamento")
												});
				}
						
			}
			catch (Exception e) 
			{
				System.out.println("Erro ao executar SQL de consulta");
			}
		}
		catch (Exception e) 
		{
			System.out.println("Erro ao executar SQL de consulta!");
		}
	}
	public boolean consultarEndereco(String etapa, String rua, String bloco, String apartamento, DefaultTableModel modelo)
	{
		modelo.setNumRows(0);
		bancoConexao.conecta();
		try 
		{
			String sql = "SELECT * FROM clientes WHERE cliEtapa = '"+etapa+"' AND cliRua = '"+rua+"' AND cliBloco = '"+bloco+"' AND cliApartamento = '"+apartamento+"'";
			try 
			{
				ResultSet rs = bancoConexao.st.executeQuery(sql);
				
				while(rs.next())
				{
					modelo.addRow(new String[]{
											rs.getString("cliCod"),
											rs.getString("cliNome"),
											rs.getString("cliTelefone"),
											rs.getString("cliCelular"),
											rs.getString("cliEtapa"),
											rs.getString("cliRua"),
											rs.getString("cliBloco"),
											rs.getString("cliApartamento")
										});
					
					return true;		
				}
			}
			catch (Exception e) 
			{
				System.out.println("Erro ao executar SQL de BUSCA!");
			}
		}
		catch (Exception e) 
		{
			System.out.println("Erro no SQL de CONSULTA!");
		}
		
		return false;
	}
	public void carregarTabelaPorFiltro(String pPesquisa, DefaultTableModel modelo, JTable tabela)
	{
		modelo.setNumRows(0);
		bancoConexao.conecta();
		try 
		{
			String sql = "SELECT * FROM clientes"+
						" WHERE cliNome LIKE '%"+pPesquisa+"%' OR "+
						"cliTelefone LIKE '%"+pPesquisa+"%' OR "+
						"cliCelular LIKE '%"+pPesquisa+"%'"+
						"ORDER BY cliCod";
			try 
			{
				ResultSet rs = bancoConexao.st.executeQuery(sql);
				while(rs.next())
				{
					modelo.addRow(new String[]{
												rs.getString("cliCod"),
												rs.getString("cliNome"),
												rs.getString("cliTelefone"),
												rs.getString("cliCelular"),
												rs.getString("cliEtapa"),
												rs.getString("cliRua"),
												rs.getString("cliBloco"),
												rs.getString("cliApartamento")
												});
					tabela.setRowSelectionInterval(0, 0);
				}
						
			}
			catch (Exception e) 
			{
				System.out.println("Erro ao executar SQL de consulta");
				System.out.println(sql);
			}
		}
		catch (Exception e) 
		{
			System.out.println("Erro ao executar SQL de consulta!");
		}
	}
	public void atulizarClientes(int codigo, String nome, String telefone, String celular, String etapa, String rua, String bloco, int apto)
	{
		bancoConexao.conecta();
		try 
		{
			String sql = "UPDATE clientes SET cliNome = '"+nome+"', cliTelefone = '"+telefone+"', cliCelular = '"+celular+"', "+
							"cliEtapa = '"+etapa+"', cliRua = '"+rua+"', cliBloco = '"+bloco+"', cliApartamento = "+apto+" "+
							"WHERE cliCod = "+codigo+"";
			try 
			{
				bancoConexao.st.execute(sql);
				System.out.println(sql);
			} 
			catch (Exception e) 
			{
				System.out.println("Erro ao executar SQL de atualizacao");
				System.out.println(sql);
			}
		}
		catch (Exception e) 
		{
			System.out.println("Erro no codigo SQL de atualizacao!");
		}
	}
	public void atulizarClientesSemTelefone(int codigo, String nome, String celular, String etapa, String rua, String bloco, int apto)
	{
		bancoConexao.conecta();
		try 
		{
			String sql = "UPDATE clientes SET cliNome = '"+nome+"', cliTelefone = NULL, cliCelular = '"+celular+"', "+
							"cliEtapa = '"+etapa+"', cliRua = '"+rua+"', cliBloco = '"+bloco+"', cliApartamento = "+apto+" "+
							"WHERE cliCod = "+codigo+"";
			try 
			{
				bancoConexao.st.execute(sql);
				System.out.println(sql);
			} 
			catch (Exception e) 
			{
				System.out.println("Erro ao executar SQL de atualizacao");
				System.out.println(sql);
			}
		}
		catch (Exception e) 
		{
			System.out.println("Erro no codigo SQL de atualizacao!");
		}
	}
	public void atulizarClientesSemCelular(int codigo, String nome, String telefone, String etapa, String rua, String bloco, int apto)
	{
		bancoConexao.conecta();
		try 
		{
			String sql = "UPDATE clientes SET cliNome = '"+nome+"', cliTelefone = '"+telefone+"', cliCelular = NULL, "+
							"cliEtapa = '"+etapa+"', cliRua = '"+rua+"', cliBloco = '"+bloco+"', cliApartamento = "+apto+" "+
							"WHERE cliCod = "+codigo+"";
			try 
			{
				bancoConexao.st.execute(sql);
				System.out.println(sql);
			} 
			catch (Exception e) 
			{
				System.out.println("Erro ao executar SQL de atualizacao");
				System.out.println(sql);
			}
		}
		catch (Exception e) 
		{
			System.out.println("Erro no codigo SQL de atualizacao!");
		}
	}
	
}
